<?php
/*
header('Content-Type: image/jpeg');
imagejpeg($img);     // 输出图像
imagedestroy($img);  // 摧毁图像
$imagePath="1.gif";
*/

//  http://ctriptech.zhiye.com/User/Account/GetValidateCode      gif     携程校招验证码
//  http://xxjw.hnust.cn/xxjw/verifycode.servlet                 jpeg    教务网
//  http://talent.baidu.com/baidu/web/httpservice/getVerifyCode  jpeg    百度招聘
//  http://base.haitou.cc/public/randcode_small.php              jpeg    海投网

/*
 * 宽为13
 */
 
//  0   13  全     "----000000-----000000000----000---0000--000-----000--000-----0000000-------000000-------000000-------000000-------000000-------000000-------000000-------000000-------000-000-----000--000-----000--0000---000----000000000-----000000----"
//  1   13  前后 "-----000-------000000------0000000------000-000----------000----------000----------000----------000----------000----------000----------000----------000----------000----------000----------000----------000------00000000000--00000000000-"
//  2   13  后     "---000000------000000000---000----000---00------000----------000----------000----------000---------000----------000---------000---------000---------000---------000---------000---------000---------000---------000000000000-000000000000-"
//  3   13  前后 "---000000------00000000-----00---0000----------000----------000----------000----------000---------000------000000-------0000000----------0000-----------000----------000----------000----------000--00----0000---000000000-----0000000----"
//  4   13  全     "-------0000---------0000--------00000-------000-00------0000-00------000--00-----000--000----000---000----000---000---000----000--000-----000--000-----000--00000000000000000000000000--------000----------000----------000----------000--"
//  5   13  前后 "--000000000----000000000----000----------000----------000----------000----------000----------0000000------000000000---------0000----------0000----------000----------000----------000---------0000--00----0000---000000000-----0000000----"
//  6   13  全     "-----000000-----00000000-----000-----0--000----------000----------00----------000----------000--00000---00000000000--00000---0000-0000-----0000000-------0000-0-------000-00-------000-000------000--000----000----00000000------00000----"
//  7   13  全     "00000000000000000000000000---------000---------0000---------000---------0000---------000----------000---------000----------000---------000----------000---------0000---------000----------000---------000----------000---------000--------"
//  8   13  全     "----000000-----000000000---0000---0000--000-----000--000-----000--0000----000---00000-000----00000000------0000000-----000-00000---000----0000-000------0000000-------000000-------0000000------000-0000----000--0000000000-----000000----"
//  9   13  后     "---000000------00000000----0000--0000--0000----000--000------000-000------000-000------000-0000-----000--0000--00000--00000000000----00000-000----------000----------00----------000----------000---00---0000----00000000------000000-----"

/**
 * 百度校招验证码  
 * http://talent.baidu.com/external/baidu/index.html#/login
 * @var unknown
 */
class Valite {
	private $key;
	private $num;
	private $img;
	private $imagePath;
	
	function __construct($url){
		// 宽为13
		$this->key[0]="----000000-----000000000----000---0000--000-----000--000-----0000000-------000000-------000000-------000000-------000000-------000000-------000000-------000000-------000-000-----000--000-----000--0000---000----000000000-----000000----";
		$this->key[1]="-----000-------000000------0000000------000-000----------000----------000----------000----------000----------000----------000----------000----------000----------000----------000----------000----------000------00000000000--00000000000-";
		$this->key[2]="---000000------000000000---000----000---00------000----------000----------000----------000---------000----------000---------000---------000---------000---------000---------000---------000---------000---------000000000000-000000000000-";
		$this->key[3]="---000000------00000000-----00---0000----------000----------000----------000----------000---------000------000000-------0000000----------0000-----------000----------000----------000----------000--00----0000---000000000-----0000000----";
		$this->key[4]="-------0000---------0000--------00000-------000-00------0000-00------000--00-----000--000----000---000----000---000---000----000--000-----000--000-----000--00000000000000000000000000--------000----------000----------000----------000--";
		$this->key[5]="--000000000----000000000----000----------000----------000----------000----------000----------0000000------000000000---------0000----------0000----------000----------000----------000---------0000--00----0000---000000000-----0000000----";
		$this->key[6]="-----000000-----00000000-----000-----0--000----------000----------00----------000----------000--00000---00000000000--00000---0000-0000-----0000000-------0000-0-------000-00-------000-000------000--000----000----00000000------00000----";
		$this->key[7]="00000000000000000000000000---------000---------0000---------000---------0000---------000----------000---------000----------000---------000----------000---------0000---------000----------000---------000----------000---------000--------";
		$this->key[8]="----000000-----000000000---0000---0000--000-----000--000-----000--0000----000---00000-000----00000000------0000000-----000-00000---000----0000-000------0000000-------000000-------0000000------000-0000----000--0000000000-----000000----";
		$this->key[9]="---000000------00000000----0000--0000--0000----000--000------000-000------000-000------000-0000-----000--0000--00000--00000000000----00000-000----------000----------00----------000----------000---00---0000----00000000------000000-----";
		$this->imagePath=$url;
		$this->img = imagecreatefromjpeg($this->imagePath);   //创建一个新图象
		// $this->img = imagecreatefromgif($this->imagePath);  // gif 格式
	}
	public function number($str,$key){
		$cont=strlen($str);
		$num=null;$fg=-1;
		for($i=0;$i<10;$i++){
			$flag=0;
			for($j=0;$j<$cont;$j++){
				if($str[$j]==$key[$i][$j]) $flag++;
			}
			if($flag>$fg){
				$fg=$flag;
				$num=$i;
			}
		}
		return $num;
	}
	public function yzm(){
		imagefilter($this->img, IMG_FILTER_GRAYSCALE); //图片灰度处理
		$size= getimagesize($this->imagePath);         //获取图片尺寸		
		for($i=12;$i<30;$i++){
			for($j=0;$j<$size[0];$j++){
				$rgb = imagecolorat($this->img, $j, $i);            //取得某像素的颜色索引值
				$rgbarray = imagecolorsforindex($this->img, $rgb);  //取得某索引的颜色
				if($rgbarray['red']<130&&$rgbarray['green']<130&&$rgbarray['blue']<130){
					echo "0";
				}else{
					echo "-";
				}
			}
			echo "<br>";
		}
		echo "<br><br><br>";
		
		// 获取单个字符的宽度    然后调整
		$flag=0;$flag1=0;$x=null;$num=null;
		for($j=0,$k=0;$j<$size[0];$j++){
			for($i=12;$i<30;$i++){
				$rgb = imagecolorat($this->img, $j, $i);            //取得某像素的颜色索引值
				$rgbarray = imagecolorsforindex($this->img, $rgb);  //取得某索引的颜色
				if($rgbarray['red']<130&&$rgbarray['green']<130&&$rgbarray['blue']<130){
					$flag1=1;$x=$j;    				
				}
			}
			if($flag1==1&&$flag!=$flag1){
				$num[$k][1]=$x;				
			}else if($flag1==0&&$flag!=$flag1){
				$num[$k][2]=$x+1;
				$num[$k][3]=$num[$k][2]-$num[$k][1];
				if($num[$k][3]==9){
					$num[$k][1]-=2;
					$num[$k][2]+=2;
				}else if($num[$k][3]==10){
					$num[$k][1]-=1;
					$num[$k][2]+=2;
				}else if($num[$k][3]==11){
					$num[$k][1]-=1;
					$num[$k][2]+=1;
				}else if($num[$k][3]==12){
					$num[$k][2]+=1;
				}else if($num[$k][3]==14){
					$num[$k][1]+=1;
				}
				$num[$k][3]=$num[$k][2]-$num[$k][1];
				$k++;
			}
			$flag=$flag1; $flag1=0;
		}
		//var_dump($num);
		
		for($k=0;$k<4;$k++){
			$str="";
			for($i=12;$i<30;$i++){
				for($j=$num[$k][1];$j<$num[$k][2];$j++){
					$rgb = imagecolorat($this->img, $j, $i);            //取得某像素的颜色索引值
					$rgbarray = imagecolorsforindex($this->img, $rgb);  //取得某索引的颜色
					if($rgbarray['red']<130&&$rgbarray['green']<130&&$rgbarray['blue']<130){
						$str=$str."0";  //echo "0";
					}else{
						$str=$str."-";  //echo "-";
					}
				}
				//echo "<br>";
			}
			$num[$k]['num']=$this->number($str,$this->key);
			echo $num[$k]['num'];
		}
		echo "<br><br><br>";	
	}
}
$url="http://talent.baidu.com/baidu/web/httpservice/getVerifyCode";
$yzm=new Valite($url);
$yzm->yzm();

